#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <unistd.h>

struct TestStruct
{
    int a;
    int b;
};

#define ARRAR_MAX_SIZE (5)
int main(int argc, char **argv)
{
    // 定义int类型的数组变量，保存ARRAR_MAX_SIZE个int类型的元素。
    // iv数组的空间是连续的，大小为sizeof(int) * ARRAR_MAX_SIZE。iv表示的就是这块连续内存的变量。
    // iv有自己的意义，表示数组内存块首地址。并且没有额外空间保持iv，程序执行器自动获取首地址？
    // iv也能取地址：&iv,并且有&iv值==iv值。
    // 特殊说明：由于没介绍指针，简单说下他们含义。iv表示指向char类型的指针。&iv表示指向char数组的指针。
    struct TestStruct sv[ARRAR_MAX_SIZE];

    // 对每个数组每个元素进行赋值。
    // 这里定义了两个i变量，但他们在for结束时被释放，因此可以这样定义。
    for (int i = 0 /*c99*/; i < ARRAR_MAX_SIZE; i++)
    {
        sv[i].a = i + 1;
        sv[i].b = sv[i].a * i;
    }

    // 打印每个元素的值。
    printf("[%s,%d]printf array : \n", __FILE__, __LINE__);
    for (int i = 0 /*c99*/; i < ARRAR_MAX_SIZE; i++)
    {
        printf("[%s,%d]array[%d].a=%d,array[%d].b=%d\n", __FILE__, __LINE__, i, sv[i].a, i, sv[i].b);
    }
    return 1;
}
